class MyClass():
    def __setattr__(self, key, value):
        #必须得继承父类的方法，否则会报错
        super(MyClass,self).__setattr__( key, value)
        print("自定义了__setattr__，对实例属性的赋值就会调用它")
    pass


mc1=MyClass()
mc2=MyClass()
mc1.name="孙悟空"
print(mc1.name)
#此时会报错AttributeError: 'MyClass' object has no attribute 'name'
#print(mc2.name)

#常规的对实例属性赋值，被赋值的属性和值会存入实例属性字典__dict__中。
#本质上就是给实例所在的名字空间字典中添加或修改了一个“属性：值”对；
print(mc1.__dict__)
print(mc2.__dict__)